module.exports = class extends think.Logic {
  __before() {
    // todo 校验token是否有效
    const token = this.header('token');
    const header = this.ctx.request.header;
    const url = this.ctx.url;
    if (url === '/user/login') {
      return true;
    }
    if (!token) {
      return this.fail('请求必须带token');
    }
    const tokenService = think.service('token');
    const result = tokenService.verifyToken(token);
    if (result === 'fail') {
      return this.fail('token无效，请登录重新获取');
    }
    const username = result.username;
    const password = result.password;
    const iat = result.iat;
    const exp = result.exp;
    const expireDate = this._dateUtil(exp);
    const generateDate = this._dateUtil(iat);

    console.log('token生成时间：' + generateDate);
    console.log('token过期时间：' + expireDate);
  }

  // 时间戳转时间工具方法
  _dateUtil(time) {
    const date = new Date(time * 1000);// .转换成毫秒
    const dt = date.getFullYear() + '-' + (date.getMonth() < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + '-' + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + ' ' + date.toTimeString().substr(0, 8));
    return dt;
  }
  indexAction() {
    // todo
    // this.allowMethods = 'post'; //  只允许 POST 请求类型

    // 配置字段校验规则
    // let rules = {
    //   username: {
    //     string: true,       // 字段类型为 String 类型
    //     required: true,     // 字段必填
    //     default: 'thinkjs', // 字段默认值为 'thinkjs'
    //     trim: true,         // 字段需要trim处理
    //     method: 'GET'       // 指定获取数据的方式
    //   },
    //   age: {
    //     int: {min: 20, max: 60} // 20到60之间的整数
    //   }
    // }
    //
    // // 自定义 app_id 的错误信息
    // let msgs = {
    //   username: '{name} 不能为空(自定义错误)',
    // }
    // let flag = this.validate(rules,msgs);
    //
    // if(!flag){
    //     console.log('请求参数检验没有通过');
    //     // this.fail 方法把错误信息以 JSON 格式输出，也可以通过 this.display 方法输出一个页面
    //     // Logic 继承了 Controller 可以调用 Controller 的 方法
    //     return this.fail('请求参数检验没有通过', this.validateErrors);
    //   // 如果校验失败，返回
    //   // {"errno":1000,"errmsg":"validate error","data":{"username":"username can not be blank"}}
    // }

    // 自动调用校验方法
    this.rules = {
      username: {
        required: true
      },
      age: {
        int: {min: 20, max: 60} // 20到60之间的整数
      }
    };
  }

  loignAction() {
    this.allowMethods = 'POST'; //  只允许 POST 请求类型
  }

  __after() {
    // todo
    console.log('我在方法后执行了...');
  }
};
